package com.shiliuzi.www.service;

import com.aliyuncs.exceptions.ClientException;
import com.shiliuzi.www.common.Result;
import com.shiliuzi.www.pojo.dto.revoke.*;
import com.shiliuzi.www.pojo.po.Cancel;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public interface RevokeService {
    Result selRecord(RevokeShowDto revokeShowDto);
    Result setRevoke(RevokeSetDto revokeSetDto, MultipartFile file) throws IOException, ClientException;
    Result updateRevoke(RevokeSetDto revokeSetDto);
    Result delRevoke(List<Integer> idList);
    Result cancelRecord(Cancel cancel);

    /**
     * 管理员查询申述记录
     * @param cancelRecordGetDto 分页查询操作
     * @return
     */
    Result obtainCancelRecord(CancelRecordGetDto cancelRecordGetDto);

    /**
     * 成员申述撤销奖惩记录
     * @param infoRecordDto
     * @return
     */
    Result infoCancelRecord(InfoRecordDto infoRecordDto);

    /**
     * 管理员查询奖惩类型
     * @param recordClassGetDto
     * @return
     */
    Result obtainRecordClass(RecordClassGetDto recordClassGetDto);

    /**
     * 管理员添加奖惩类型
     * @param recordClassSetDto
     * @return
     */
    Result setRecordClass(RecordClassSetDto recordClassSetDto);

    /**
     * 管理员修改奖惩类型
     * @param recordClassUpdateDto
     * @return
     */
    Result updateRecordClass(RecordClassUpdateDto recordClassUpdateDto);

    /**
     * 管理员禁用或启用奖惩类型
     * @param recordClassBanDto
     * @return
     */
    Result banOrRecoverRevokeClass(RecordClassBanDto recordClassBanDto);

    /**
     * 管理员删除类型，并使用其他类型进行替换
     * @param recordClassDelDto
     * @return
     */
    Result updateDelRecordClass(RecordClassDelDto recordClassDelDto);

}
